﻿IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'ReporteMovimientos')
	BEGIN
		DROP  Procedure  ReporteMovimientos
	END

GO

CREATE Procedure ReporteMovimientos

	(
		@FechaDesde datetime,
		@FechaHasta datetime,
		@InsumoID int = NULL
	)

AS

SELECT     
dbo.Movimientos.movimientoID AS ID, 
dbo.Movimientos.fecha AS Fecha,
CASE
	WHEN dbo.Movimientos.motivo = 1 THEN 'MOV01 - ' + CONVERT(varchar, dbo.Movimientos.operacionID)
	WHEN dbo.Movimientos.motivo = 2 THEN 'MOV02 - ' + CONVERT(varchar, dbo.Movimientos.operacionID)
	WHEN dbo.Movimientos.motivo = 3 THEN 'MOV03 - ' + CONVERT(varchar, dbo.Movimientos.operacionID)
	WHEN dbo.Movimientos.motivo = 4 THEN 'MOV04 - ' + CONVERT(varchar, dbo.Movimientos.operacionID)
	WHEN dbo.Movimientos.motivo = 5 THEN 'MOV05 - ' + CONVERT(varchar, dbo.Movimientos.operacionID)
	WHEN dbo.Movimientos.motivo = 6 THEN 'MOV06 - ' + CONVERT(varchar, dbo.Movimientos.operacionID)
	WHEN dbo.Movimientos.motivo = 7 THEN 'MOV07 - ' + CONVERT(varchar, dbo.Movimientos.operacionID)
	WHEN dbo.Movimientos.motivo = 8 THEN 'MOV08 - ' + CONVERT(varchar, dbo.Movimientos.operacionID)
END AS Codigo, 
CASE
	WHEN dbo.Movimientos.motivo = 1 THEN 'Ingreso por Compra'
	WHEN dbo.Movimientos.motivo = 2 THEN 'Salida por Venta'
	WHEN dbo.Movimientos.motivo = 3 THEN 'Translado de Producto'
	WHEN dbo.Movimientos.motivo = 4 THEN 'Consumo en Cocina'
	WHEN dbo.Movimientos.motivo = 5 THEN 'Salida por Control de Calidad'
	WHEN dbo.Movimientos.motivo = 6 THEN 'Bajas por Obsolescencia'
	WHEN dbo.Movimientos.motivo = 7 THEN 'Ingreso por Ajuste'
	WHEN dbo.Movimientos.motivo = 8 THEN 'Salida por Ajuste'
END AS Motivo, 
dbo.Insumos.nombre AS Insumo, 
ISNULL(dbo.Lotes.numero, '----') AS Lote, 
dbo.Almacenes.nombre AS Almacen, 
dbo.Movimientos.cantidad AS Cantidad, 
dbo.Movimientos.saldo AS Saldo
FROM dbo.Movimientos 
INNER JOIN dbo.Lotes ON dbo.Movimientos.loteID = dbo.Lotes.loteID 
INNER JOIN dbo.Insumos ON dbo.Lotes.insumoID = dbo.Insumos.insumoID 
INNER JOIN dbo.Almacenes ON dbo.Movimientos.almacenID = dbo.Almacenes.almacenID
WHERE (dbo.Movimientos.fecha >= @FechaDesde AND dbo.Movimientos.fecha <= @FechaHasta) AND
CASE 
	WHEN @InsumoID IS NULL THEN 1
	WHEN @InsumoID = dbo.Insumos.insumoID THEN 1
	ELSE 0
END = 1
ORDER BY dbo.Movimientos.fecha


GO

GRANT EXEC ON ReporteMovimientos TO PUBLIC

GO


